import json
import logging
import os
import sys
from logging.handlers import RotatingFileHandler

from flask import Blueprint, jsonify, request

# 添加当前目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 导入数据获取和保存函数
IMPORT_SUCCESS = False
error_message = ""

try:
    # 尝试导入AutoGet_data函数
    from app.moudules8.erp_purch import AutoGet_data

    IMPORT_SUCCESS = True
except ImportError as e:
    error_message = f"ImportError: {str(e)}"
    # 使用标准日志记录而不是直接logging.error
    logger = logging.getLogger(__name__)
    logger.warning(f"导入模块失败 - ImportError: {e}")
except Exception as e:
    error_message = f"Unexpected error: {str(e)}"
    # 使用标准日志记录而不是直接logging.error
    logger = logging.getLogger(__name__)
    logger.warning(f"导入模块失败 - Unexpected error: {e}")

# 创建蓝图
purch_data_bp = Blueprint('purch_data', __name__)

# 配置日志
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 创建日志目录
log_dir = os.path.dirname(os.path.abspath(__file__))
log_file_path = os.path.join(log_dir, 'purch_data_api.log')

# 创建文件处理器
handler = RotatingFileHandler(
    log_file_path,
    maxBytes=5000000,  # 5MB
    backupCount=3,
    encoding='utf-8'
)
handler.setFormatter(logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
))
logger.addHandler(handler)

# 确保erp_purchreturn_get模块也使用相同的日志配置
erp_logger = logging.getLogger('app.moudules8.erp_purchreturn_get')
erp_logger.setLevel(logging.INFO)
erp_logger.addHandler(handler)


@purch_data_bp.route('/purch_data/sync', methods=['POST'])
def sync_purch_data():
    """
    同步采购数据接口
    调用AutoGet_data函数获取并保存采购数据
    """
    # 检查模块是否成功导入
    if not IMPORT_SUCCESS:
        logger.error(f'模块导入失败，请检查服务器配置: {error_message}')
        return jsonify({
            'success': False,
            'message': f'模块导入失败，请检查服务器配置: {error_message}'
        }), 500

    try:
        logger.info("开始同步采购数据")
        # 调用数据获取和保存函数
        AutoGet_data()
        logger.info("采购数据同步完成")

        return jsonify({
            'success': True,
            'message': '采购数据同步完成'
        })
    except Exception as e:
        error_msg = f"同步采购数据时出错: {str(e)}"
        logger.error(error_msg)
        return jsonify({
            'success': False,
            'message': f'同步采购数据失败: {str(e)}'
        }), 500
